Thema Datum  Von Nutzer Rating
Antwort
05.01.2012 20:49:57 joerg
NotSolved
05.01.2012 21:55:32 Heiko
NotSolved
05.01.2012 21:55:32 Heiko
NotSolved
05.01.2012 22:33:49 Gast13788
NotSolved
05.01.2012 22:40:26 joerg
NotSolved
Blau Function erzeugt ein Datenfeld--> Rückgabe über Functionnamen
06.01.2012 08:54:52 Heiko
*****
NotSolved
08.01.2012 21:45:41 joerg
NotSolved
09.01.2012 00:16:00 Heiko
*****
Solved
09.01.2012 20:44:15 joerg
Solved
09.01.2012 21:24:54 Heiko
NotSolved

Ansicht des Beitrags:
Von:
Heiko
Datum:
06.01.2012 08:54:52
Views:
1453
Rating: Antwort:
  Ja
Thema:
Function erzeugt ein Datenfeld--> Rückgabe über Functionnamen

Guten Morgen Jörg

zu 1) Gegenfrage: Warum willst du unbedingt () bei e haben. :-)

nee ernsthaft:
mit Dim e() as Integer legst du fest, dass e ein Datenfeld mit einer unbekannten Anzahl von Integerzahlen ist.
mit n=2 und Redim e(n) legst du fest, dass das Datenfeld e bis zu 3 Integerzahlen aufnehmen kann.
  (Es ginge auch Dim e(2) as Integer.)

VBA weiß es also: e ist ein Datenfeld. Alles klar. Null problemo.

In deinem Beispiel funktioniert auch e() = j(r). Ob man die Klammern immer schreiben darf, weiß ich nicht. Ich tue es nie, weil es mich eher verwirren würde. Die Klammern im Code (außerhalb der Deklaration Dim ...) verbinde ich eher mir dem Aufruf von Funktionen und Prozeduren, wie beispielsweise j(r).

Um Datenfelder besser zu erkennen, schreibe ich also keine Klammern sondern benenne Sie mit dem Präfix a_ (a für array)
Dim a_strFarben(2) as String
  a_strFarben(0) ="rot"
  a_strFarben(1) = "gelb"
  a_strFarben(2) = "grün"

zu 2)  Function j(ByVal r As Integer) As Variant

Variant ist der einzige Datentyp, der Datenfelder aufnehmen kann. Such doch mal in der Visual Basic Hilfe (F1) die Artikel zu "Variant Datentyp" und zu "Array Funktion" 

zu 3) Ja. j ist der Name der Function. du hast ihn mit Function j ... festgelegt. Ich benenne Functionen gerne mit dem Präfix fct. Dein Beispiel hätte bei mir so ausgesehen:

Public Function fctArrayZurückgeben(ByVal par_intFaktor as Integer) as Variant 
       'par_: um anzuzeigen, dass dies ein Parameter ist, der der Funktion übergeben wurde.
 ...
End Function

Testprozedur:
Public sub subTesteFctArrayZurückgeben()
  Dim intFaktor as Integer
  Dim a_intErgebnis() as Integer
  ...
  intFaktor = 5
  ...
a_intErgebnis =  fctArrayZurückgeben(intFaktor)
  ...
End Sub

Ich weiß. Das ist viel Schreibarbeit. Doch Intellisense hilft und bei größeren Projekten zahlt sich das aus. Sonst verliert man schnell die Übersicht. Was ist n,r,j ...?

Viel Spaß noch mit VBA.
Heiko

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
05.01.2012 20:49:57 joerg
NotSolved
05.01.2012 21:55:32 Heiko
NotSolved
05.01.2012 21:55:32 Heiko
NotSolved
05.01.2012 22:33:49 Gast13788
NotSolved
05.01.2012 22:40:26 joerg
NotSolved
Blau Function erzeugt ein Datenfeld--> Rückgabe über Functionnamen
06.01.2012 08:54:52 Heiko
*****
NotSolved
08.01.2012 21:45:41 joerg
NotSolved
09.01.2012 00:16:00 Heiko
*****
Solved
09.01.2012 20:44:15 joerg
Solved
09.01.2012 21:24:54 Heiko
NotSolved